package easy;

import java.util.ArrayList;
import java.util.List;

/**
 * 给你一个数组 candies 和一个整数 extraCandies ，其中 candies[i] 代表第 i 个孩子拥有的糖果数目。
 * 对每一个孩子，检查是否存在一种方案，将额外的 extraCandies 个糖果分配给孩子们之后，此孩子有 最多 的糖果。注意，允许有多个孩子同时拥有 最多 的糖果数目。
 */
public class kidsWithCandies {

    public static void main(String[] args) {
        int[] candies = {2,3,5,1,3};
        System.out.println(myCode(candies, 3));
        System.out.println(ans(candies, 3));
    }

    public static List<Boolean> myCode(int[] candies, int extraCandies) {
        /**
         * 创建指定长度的列表，节约内存
         */
        List<Boolean> reList = new ArrayList<>(candies.length);
        int max = 0;
        for (int candy : candies) {
            if (candy > max) {
                max = candy;
            }
        }

        for (int candy : candies) {
            if (candy + extraCandies >= max) {
                reList.add(true);
            } else {
                reList.add(false);
            }
        }
        return reList;
    }

    /**
     * 节约0.1M内存
     * @param candies
     * @param extraCandies
     * @return
     */
    public static List<Boolean> ans(int[] candies, int extraCandies) {
        int len = candies.length;
        List<Boolean> reList = new ArrayList<>(len);
        int max = 0;
        for (int i = 0; i < len; i++) {
            if (candies[i] > max) {
                max = candies[i];
            }
        }

        for (int i = 0; i < len; i++) {
            if (candies[i] + extraCandies < max) {
                reList.add(false);
            } else {
                reList.add(true);
            }
        }
        return reList;
    }
}
